package com.aaxis.microservice.training.demo1.service;

import com.aaxis.microservice.training.demo1.dao.ItemPriceDAO;
import com.aaxis.microservice.training.demo1.domain.ItemPrice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component;

import java.util.Optional;

@Component
public class ItemPriceService {

    @Autowired
    private ItemPriceDAO mItemPriceDAO;
    /**
     * @Author tonywang
     * @Description
     *  cacheNames 设置缓存的值
     *  key：指定缓存的key，这是指参数id值。 key可以使用spEl表达式
     *  如果设置sync=true，
     *  如果缓存中没有数据，多个线程同时访问这个方法，则只有一个方法会执行到方法，其它方法需要等待
     *  如果缓存中已经有数据，则多个线程可以同时从缓存中获取数据
     * @Date 10/11/2018 4:09 PM
     * @Param [pProductId]
     * @return com.aaxis.microservice.training.demo1.domain.ItemPrice
     **/
    @Cacheable(cacheNames = "price_productId", key = "#productId",sync = true)
    public ItemPrice findItemPriceById(String productId){
        Optional<ItemPrice> optionalItemPrice = mItemPriceDAO.findById(productId);
        if(optionalItemPrice.isPresent()){
            return optionalItemPrice.get();
        }
        return null;
    }

    public void initData(){
        mItemPriceDAO.insertItemPrice();
    }

}
